package cn.dansj.common.utils.spring.context.condition;

import cn.dansj.common.utils.reflect.ClassUtils;
import cn.dansj.common.utils.transfer.Transformation;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.core.type.ClassMetadata;
import org.springframework.core.type.MethodMetadata;

class ConditionalUtils {
    // 提取当前配置类的 Class 对象
    public static Class<?> extractConfigClass(AnnotatedTypeMetadata metadata) {
        return Transformation.lambdaTryCatch(() -> ClassUtils.forName(extractConfigClassName(metadata)), () -> null);
    }

    public static String extractConfigClassName(AnnotatedTypeMetadata metadata) {
        return metadata instanceof ClassMetadata ? ((ClassMetadata) metadata).getClassName() : metadata instanceof MethodMetadata ? ((MethodMetadata) metadata).getReturnTypeName() : null;
    }
}
